home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 9 / FM Towns Free Software Collection 9.iso / t_os / tool / var_list / var_list.bas next >
BASIC Source File  |  1994-11-16  |  6KB  |  194 lines

  1. 10 REM 変数チェック
  2. 20 '
  3. 30 '1992.12.31-1993.1.6
  4. 40 '
  5. 50 DEFINT A-Z
  6. 60 WIDTH 80,25:CONSOLE 0,24,2:CLS
  7. 70 RSVMAX=239
  8. 80 K_FLG=0:DP=1 
  9. 90 '
  10. 100 DIM RSV$(RSVMAX)
  11. 110 DIM VAR_D$(9999),LNUM_D(9999),PREV_N(9999),NEXT_N(9999) 
  12. 120 DIM AB_TBL(255),TBL_FL(255)
  13. 130 VAR_D$(0)=CHR$(0)  :LNUM_D(0)=0:PREV_N(0)=-1:NEXT_N(0)=1
  14. 140 VAR_D$(1)=CHR$(255):LNUM_D(1)=0:PREV_N(1)=0 :NEXT_N(1)=-1
  15. 150 AB_TBL(0)=0
  16. 160 FOR I=1 TO 255
  17. 170   AB_TBL(I)=1
  18. 180 NEXT
  19. 190 TBL_FL(0)=1:TBL_FL(255)=1
  20. 200 '
  21. 210 RESTORE *RESERVED.WORD
  22. 220 FOR I=0 TO RSVMAX
  23. 230   READ RSV$(I)
  24. 240 NEXT
  25. 250 '
  26. 260 LINE INPUT "ファイル名を入力  ",BASFILE$
  27. 270 IF BASFILE$="" THEN 550
  28. 280 ON ERROR GOTO *INPUT.ER
  29. 290 IF KRIGHT$(BASFILE$,4)<>".BAS" THEN ERROR 255
  30. 300 OPEN BASFILE$ FOR INPUT AS #1
  31. 310 ON ERROR GOTO 0
  32. 320 '
  33. 330 WHILE EOF(1)=0
  34. 340   LINE INPUT# 1,LINEDATA$
  35. 350   L_NUM=VAL(LEFT$(LINEDATA$,7))
  36. 360   PRINT:PRINT:PRINT USING "###### ";L_NUM;
  37. 370   GOSUB *WORD.EXTRACT
  38. 380 WEND
  39. 390 CLOSE
  40. 400 '
  41. 410 LSTFILE$="":PT=1:ESC=0
  42. 420 WHILE ESC=0
  43. 430   B$=KMID$(BASFILE$,PT,1)
  44. 440   IF B$="." THEN ESC=1
  45. 450   LSTFILE$=LSTFILE$+B$
  46. 460   PT=PT+1
  47. 470 WEND
  48. 480 LSTFILE$=LSTFILE$+"LST"
  49. 490 ON ERROR GOTO *OUTPUT.ER
  50. 500 OPEN LSTFILE$ FOR OUTPUT AS #1
  51. 510 ON ERROR GOTO 0
  52. 520 '
  53. 530 GOSUB *HYOUJI
  54. 540 CLOSE
  55. 550 END
  56. 560 '
  57. 570 *WORD.EXTRACT
  58. 580 LLEN=KLEN(LINEDATA$)
  59. 590 MD=1:QMD=0
  60. 600 FOR LP=1 TO LLEN
  61. 610   CHAR$=KMID$(LINEDATA$,LP,1)
  62. 620   IF QMD=0 THEN
  63. 630     ON MD GOSUB *MD1,*MD2,*MD2,*MD2
  64. 640     IF MD=5 AND CHAR$=":" THEN MD=1
  65. 650   ENDIF
  66. 660   IF CHAR$=CHR$(&H22) THEN QMD=1-QMD
  67. 670 NEXT
  68. 680 IF MD=2 AND QMD=0 THEN
  69. 690   ML=LLEN-SP+1
  70. 700   GOSUB *KAKUTEI
  71. 710 ENDIF
  72. 720 RETURN
  73. 730 '
  74. 740 *MD1 '未確定状態
  75. 750 IF CHAR$="'" THEN MD=0:GOTO 820
  76. 760 IF CHAR$="*" THEN MD=3:GOTO 820
  77. 770 IF CHAR$="&" THEN MD=4:GOTO 820
  78. 780 IF KTYPE(CHAR$,1)=1 OR (&H41<=ASC(CHAR$) AND ASC(CHAR$)<=&H5A) THEN
  79. 790   MD=2 
  80. 800   SP=LP
  81. 810 ENDIF
  82. 820 RETURN
  83. 830 '
  84. 840 *MD2 '切り取り中
  85. 850 IF KTYPE(CHAR$,1)=1                      THEN 1000
  86. 860 IF &H41<=ASC(CHAR$) AND ASC(CHAR$)<=&H5A THEN 1000
  87. 870 IF &H30<=ASC(CHAR$) AND ASC(CHAR$)<=&H39 THEN 1000
  88. 880 IF CHAR$="_"                             THEN 1000
  89. 890 IF CHAR$="$"                             THEN 1000
  90. 900 IF CHAR$="%"                             THEN 1000
  91. 910 IF CHAR$="&"                             THEN 1000
  92. 920 IF CHAR$="!"                             THEN 1000
  93. 930 IF CHAR$="#"                             THEN 1000
  94. 940 IF MD=3 AND CHAR$="."                    THEN 1000
  95. 950 IF MD=3 OR MD=4 THEN MD=1               :GOTO 1000
  96. 960 IF CHAR$="(" THEN K_FLG=1
  97. 970 MD=1
  98. 980 ML=LP-SP
  99. 990 GOSUB *KAKUTEI
  100. 1000 RETURN
  101. 1010 '
  102. 1020 *KAKUTEI
  103. 1030 KOHO$=KMID$(LINEDATA$,SP,ML)
  104. 1040 IF KOHO$="REM" OR KOHO$="DATA"                THEN MD=0:GOTO 1170
  105. 1050 IF MID$(LINEDATA$,SP-1,1)="*"                 THEN 1170
  106. 1060 IF KOHO$="DEFINT" OR KOHO$="DEFLNG" OR KOHO$="DEFSNG" OR                       KOHO$="DEFDBL" OR KOHO$="DEFSTR" THEN MD=5:GOTO 1170 
  107. 1070 RSV=0
  108. 1080 FOR I=0 TO RSVMAX
  109. 1090   IF KOHO$=RSV$(I) THEN RSV=1 
  110. 1100 NEXT
  111. 1110 IF RSV=0 THEN
  112. 1120   IF K_FLG=1 THEN KOHO$=KOHO$+"()"
  113. 1130   PRINT KOHO$;",";
  114. 1140   GOSUB *SEIRI
  115. 1150 ENDIF
  116. 1160 K_FLG=0
  117. 1170 RETURN
  118. 1180 '
  119. 1190 *SEIRI
  120. 1200 DP=DP+1
  121. 1210 VAR_D$(DP)=KOHO$:LNUM_D(DP)=L_NUM
  122. 1220 TBL_N=ASC(KOHO$)
  123. 1230 CPS=AB_TBL(TBL_N)
  124. 1240 ESC=0:CP=CPS
  125. 1250 WHILE ESC=0
  126. 1260   IF KOHO$<VAR_D$(CP) THEN
  127. 1270     ESC=1
  128. 1280     MAE=PREV_N(CP):ATO=CP
  129. 1290     NEXT_N(MAE)=DP:PREV_N(DP)=MAE
  130. 1300     NEXT_N(DP)=ATO:PREV_N(ATO)=DP
  131. 1310     IF CP=CPS THEN
  132. 1320       AB_TBL(TBL_N)=DP:TBL_FL(TBL_N)=1
  133. 1330       TP=TBL_N-1 
  134. 1340       WHILE TBL_FL(TP)=0
  135. 1350         AB_TBL(TP)=DP
  136. 1360         TP=TP-1
  137. 1370       WEND
  138. 1380     ENDIF
  139. 1390   ENDIF
  140. 1400   CP=NEXT_N(CP)
  141. 1410 WEND
  142. 1420 RETURN
  143. 1430 '
  144. 1440 *HYOUJI
  145. 1450 DN=NEXT_N(0):VAR$=VAR_D$(0)
  146. 1460 WHILE DN<>1
  147. 1470   IF VAR_D$(DN)<>VAR$ THEN
  148. 1480     VAR$=VAR_D$(DN):L_NUM=0
  149. 1490     PRINT:PRINT:PRINT VAR$,
  150. 1500     PRINT #1,CHR$(&HD);CHR$(&HA);CHR$(&HD);CHR$(&HA);VAR$
  151. 1510   ENDIF
  152. 1520   IF LNUM_D(DN)>L_NUM THEN
  153. 1530     L_NUM=LNUM_D(DN)
  154. 1540     PRINT L_NUM;
  155. 1550     PRINT #1,USING "########";L_NUM;
  156. 1560   ENDIF
  157. 1570   DN=NEXT_N(DN)
  158. 1580 WEND
  159. 1590 RETURN
  160. 1600 '
  161. 1610 '
  162. 1620 *INPUT.ER
  163. 1630 PRINT:PRINT "ファイル名が不正です。終了ならリターン":PRINT
  164. 1640 BEEP
  165. 1650 RESUME 260
  166. 1660 '
  167. 1670 *OUTPUT.ER
  168. 1680 KILL LSTFILE$
  169. 1690 RESUME 500
  170. 1700 '
  171. 1710 *RESERVED.WORD
  172. 1720 DATA ABS,AKCNV$,AND,ASC,ATN,AUTO,BAUD,BEEP,BGM,CALL,CDBL,CD,CDINF 
  173. 1730 DATA CDSTAT,CDSTIME$,CHAIN,CHR$,CINT,CIRCLE,CLEAR,CLNG,CLOSE,CLS
  174. 1740 DATA COLOR,COM,COMMON,CONNECT,CONSOLE,CONT,COS,CSNG,CSRLIN,CVD,CVI
  175. 1750 DATA CVL,CVDMBF,CVS,CVSMBF,DATA,DATE,DATE$,DEF,DEFDBL,DEFINT,DEFLNG
  176. 1760 DATA DEFSNG,DEFSTR,DELETE,DIM,DRAW,DSKF,DSKI$,DSKINI,EDIT,ELSE,END
  177. 1770 DATA ENDIF,EOF,EQV,ERASE,ERL,ERR,ERROR,EXEC,EXP,FIELD,FILES,FIX,FN
  178. 1780 DATA FOR,FRE,GCURSOR,GET,GO,GOTO,HARDC,HEX$,IF,IMP,INKEY$,INP,INPUT
  179. 1790 DATA INPUT$,INSTR,INT,INTERVAL,JIS,JTRIG,JPAD,KACNV$,KANJI,KEXT$
  180. 1800 DATA KEY,KILL,KINSTR,KLEFT$,KLEN,KMID$,KNJ$,KRIGHT$,KTYPE,LEFT$,LEN
  181. 1810 DATA LET,LINE,LIST,LLIST,LOAD,LOADM,LOC,LOCATE,LOF,LOG,LPOS,LPRINT
  182. 1820 DATA LSET,MAP,MERGE,MID$,MIKD$,MKDMBF$,MKI$,MKL$,MKS$,MKSMBF$,MOD
  183. 1830 DATA MON,MOUSE,MOVIE,NAME,NEW,NEXT,NOT,OCT$,OFF,ON,OPEN,OR,OUT,OUTM
  184. 1840 DATA OUTPUT,PAD,PAINT,PALETTE,PART,PASTEL,PCMPLAY,PCMREC,PEEK,PEN
  185. 1850 DATA PLAY,POINT,POKE,POS,PRESET,PRINT,PSET,PTRIG,PUT,RANDOMIZE,READ
  186. 1860 DATA REM,RENUM,RESET,RESTORE,RESUME,RETURN,RIGHT$,RND,ROLL,RSET,RUN
  187. 1870 DATA SAVE,SCREEN,SEARCH,SGN,SHELL,SIMPOSE,SIN,SINPUT,SKIPF,SMSGPLAY
  188. 1880 DATA SOUND,SPACE$,SPC,SPRITE,SQR,STEP,STOP,STR$,STRING$,SUB,SWAP
  189. 1890 DATA SYMBOL,SYSTEM,TAB,TALK,TAN,TERM,THEN,TIME,TIME$,TO,TROFF,TRON
  190. 1900 DATA UNLIST,USING,USR,VAL,VARPTR,VIEW,VOICE,WAIT,WEND,WHILE,WIDTH
  191. 1910 DATA WINDOW,WRITE,XOR,PAUSE,FONT,GET@,GOSUB,INPUT#,LOAD@,INFO,PLAY@
  192. 1920 DATA PRINT#,PUT@,SAVE@,SCREEN@,COPY,SET,WRITE#,MATTE,OPEQUE,OUTPUT
  193. 1930 DATA APPEND,RNDIO,AS
  194.